011 - Gravy Jobs(★6)
そのままだと状態量が多すぎるので削減しにかかる
2つの仕事$ X,Y で、$ D_X \leq D_Y なのに$ Y \to X の順でやるのは無駄。もしその順で実行可能ならば、$ X \to Y の順で実行してもよい。また、できる仕事があるのにやらずに置いておくのもムダ。(刺さる)
したがって、締切りが早い順に仕事を実行する場合に限ってよい。そのため、締切りの早い順にソートしたのちに$ dp(i,j)=仕事i までを見てj日目まで埋まっている というDPを実行すればよい。